package ch3.Singleton;

/**
 * 基于枚举类型的单例模式
 * 枚举类型Singleton相当于一个单例类，其中字段INSTANCE值相当于该类的唯一实例
 * 在初次引用Singleton.INSTANCE的时候，该实例才会被初始化
 */

public class EnumBasedSingletonExample {
    public static void main(String[] args) {
        Thread t = new Thread() {
            @Override
            public void run() {
                System.out.println(Singleton.class.getName());
                Singleton.INSTANCE.someService();
            }
        };
        t.start();
    }

    public static enum Singleton {
        INSTANCE;
        Singleton() {
            System.out.println("Singleton inited.");
        }

        public void someService() {
            System.out.println("somService invoked.");
        }
    }
}
